A service oriented architecture (SOA) platform facilitates the large scale deployment of services and applications in a distributed environment. As the complexity of these services and applications grow, it has become increasingly important to provide effective means of troubleshooting problems that arise in the design of the SOA platform or the services and/or applications.
Debugging in a non-deterministic system further adds to the difficulty of troubleshooting problems. In a deterministic system, given a set of input messages, the same output will always be produced. In this manner, a fault can be recreated by applying the same set of inputs that caused the fault in the first place. However, in a non-deterministic system (e.g., one that uses non-deterministic components such as multi-language services), the same input may produce many different states or outputs. Recreating and troubleshooting faults becomes significantly more problematic.